package com.jerry.security.service;

import org.springframework.security.core.authority.AuthorityUtils;
import org.springframework.security.core.userdetails.User;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.core.userdetails.UsernameNotFoundException;

import java.util.Collection;

public class MyUserDetailService implements UserDetailsService {

    /**
     * loadUserByUsername: 读取用户信息
     * @param username
     * @return
     * @throws UsernameNotFoundException
     */
    @Override
    public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
        //User 类就是 UserDetail 实现类，用于封装数据库账户信息
        String userStr = "admin";
        String password = "123456";
        String role = "ROLE_ADMIN";   //注意：多个角色之间用逗号隔开
        Collection roles = AuthorityUtils.commaSeparatedStringToAuthorityList(role);
        User user = new User( userStr, password, roles);

        //参数1：用户名
        //参数2：密码
        //参数3：账户是否可用。 true代表可用，false代表非可用
        //参数4：账户是否非过期。 true代表未过期，false代表过期
        //参数5：证书或密码是否非过期。 true代表未过期，false代表过期
        //参数6：账户是否非锁定。 true代表未锁定，false代表锁定
        //参数7：代表角色集合
//        User user = new User( userStr,password, true,true,true,true,roles);
        return user;
    }

}
